/*!
 * SuperSlide v2.1.1 
 * 轻松解决网站大部分特效展示问题
 * 详尽信息请看官网：http://www.SuperSlide2.com/
 *
 * Copyright 2011-2013, 大话主席
 *
 * 请尊重原创，保留头部版权
 * 在保留版权的前提下可应用于个人或商业用途

 * v2.1.1：修复当调用多个SuperSlide，并设置returnDefault:true 时返回defaultIndex索引错误

 */

(function ($) {
	$.fn.slide = function (options) {
		$.fn.slide.defaults = {
			type: "slide",
			effect: "fade",
			autoPlay: false,
			delayTime: 500,
			interTime: 2500,
			triggerTime: 150,
			defaultIndex: 0,
			titCell: ".hd li",
			mainCell: ".bd",
			targetCell: null,
			trigger: "mouseover",
			scroll: 1,
			vis: 1,
			titOnClassName: "on",
			autoPage: false,
			prevCell: ".prev",
			nextCell: ".next",
			pageStateCell: ".pageState",
			opp: false,
			pnLoop: true,
			easing: "swing",
			startFun: null,
			endFun: null,
			switchLoad: null,

			playStateCell: ".playState",
			mouseOverStop: true,
			defaultPlay: true,
			returnDefault: false
		};

		return this.each(function () {

			var opts = $.extend({}, $.fn.slide.defaults, options);
			var slider = $(this);
			var effect = opts.effect;
			var prevBtn = $(opts.prevCell, slider);
			var nextBtn = $(opts.nextCell, slider);
			var pageState = $(opts.pageStateCell, slider);
			var playState = $(opts.playStateCell, slider);

			var navObj = $(opts.titCell, slider);//导航子元素结合
			var navObjSize = navObj.size();
			var conBox = $(opts.mainCell, slider);//内容元素父层对象
			var conBoxSize = conBox.children().size();
			var sLoad = opts.switchLoad;
			var tarObj = $(opts.targetCell, slider);

			/*字符串转换*/
			var index = parseInt(opts.defaultIndex);
			var delayTime = parseInt(opts.delayTime);
			var interTime = parseInt(opts.interTime);
			var triggerTime = parseInt(opts.triggerTime);
			var scroll = parseInt(opts.scroll);
			var vis = parseInt(opts.vis);
			var autoPlay = (opts.autoPlay == "false" || opts.autoPlay == false) ? false : true;
			var opp = (opts.opp == "false" || opts.opp == false) ? false : true;
			var autoPage = (opts.autoPage == "false" || opts.autoPage == false) ? false : true;
			var pnLoop = (opts.pnLoop == "false" || opts.pnLoop == false) ? false : true;
			var mouseOverStop = (opts.mouseOverStop == "false" || opts.mouseOverStop == false) ? false : true;
			var defaultPlay = (opts.defaultPlay == "false" || opts.defaultPlay == false) ? false : true;
			var returnDefault = (opts.returnDefault == "false" || opts.returnDefault == false) ? false : true;

			var slideH = 0;
			var slideW = 0;
			var selfW = 0;
			var selfH = 0;
			var easing = opts.easing;
			var inter = null;//autoPlay-setInterval 
			var mst = null;//trigger-setTimeout
			var rtnST = null;//returnDefault-setTimeout
			var titOn = opts.titOnClassName;

			var onIndex = navObj.index(slider.find("." + titOn));
			var oldIndex = index = onIndex == -1 ? index : onIndex;
			var defaultIndex = index;


			var _ind = index;
			var cloneNum = conBoxSize >= vis ? (conBoxSize % scroll != 0 ? conBoxSize % scroll : scroll) : 0;
			var _tar;
			var isMarq = effect == "leftMarquee" || effect == "topMarquee" ? true : false;

			var doStartFun = function () { if ($.isFunction(opts.startFun)) { opts.startFun(index, navObjSize, slider, $(opts.titCell, slider), conBox, tarObj, prevBtn, nextBtn) } }
			var doEndFun = function () { if ($.isFunction(opts.endFun)) { opts.endFun(index, navObjSize, slider, $(opts.titCell, slider), conBox, tarObj, prevBtn, nextBtn) } }
			var resetOn = function () { navObj.removeClass(titOn); if (defaultPlay) navObj.eq(defaultIndex).addClass(titOn) }



			//单独处理菜单效果
			if (opts.type == "menu") {

				if (defaultPlay) { navObj.removeClass(titOn).eq(index).addClass(titOn); }
				navObj.hover(
						function () {
							_tar = $(this).find(opts.targetCell);
							var hoverInd = navObj.index($(this));

							mst = setTimeout(function () {
								index = hoverInd;
								navObj.removeClass(titOn).eq(index).addClass(titOn);
								doStartFun();
								switch (effect) {
									case "fade": _tar.stop(true, true).animate({ opacity: "show" }, delayTime, easing, doEndFun); break;
									case "slideDown": _tar.stop(true, true).animate({ height: "show" }, delayTime, easing, doEndFun); break;
								}
							}, opts.triggerTime);

						}, function () {
							clearTimeout(mst);
							switch (effect) { case "fade": _tar.animate({ opacity: "hide" }, delayTime, easing); break; case "slideDown": _tar.animate({ height: "hide" }, delayTime, easing); break; }
						}
				);

				if (returnDefault) {
					slider.hover(function () { clearTimeout(rtnST); }, function () { rtnST = setTimeout(resetOn, delayTime); });
				}


				return;
			}


			//处理分页
			if (navObjSize == 0) navObjSize = conBoxSize;//只有左右按钮
			if (isMarq) navObjSize = 2;
			if (autoPage) {
				if (conBoxSize >= vis) {
					if (effect == "leftLoop" || effect == "topLoop") { navObjSize = conBoxSize % scroll != 0 ? (conBoxSize / scroll ^ 0) + 1 : conBoxSize / scroll; }
					else {
						var tempS = conBoxSize - vis;
						navObjSize = 1 + parseInt(tempS % scroll != 0 ? (tempS / scroll + 1) : (tempS / scroll));
						if (navObjSize <= 0) navObjSize = 1;
					}
				}
				else { navObjSize = 1 }

				navObj.html("");
				var str = "";

				if (opts.autoPage == true || opts.autoPage == "true") { for (var i = 0; i < navObjSize; i++) { str += "<li>" + (i + 1) + "</li>" } }
				else { for (var i = 0; i < navObjSize; i++) { str += opts.autoPage.replace("$", (i + 1)) } }
				navObj.html(str);

				var navObj = navObj.children();//重置导航子元素对象
			}


			if (conBoxSize >= vis) { //当内容个数少于可视个数，不执行效果。
				conBox.children().each(function () { //取最大值
					if ($(this).width() > selfW) { selfW = $(this).width(); slideW = $(this).outerWidth(true); }
					if ($(this).height() > selfH) { selfH = $(this).height(); slideH = $(this).outerHeight(true); }
				});

				var _chr = conBox.children();
				var cloneEle = function () {
					for (var i = 0; i < vis ; i++) { _chr.eq(i).clone().addClass("clone").appendTo(conBox); }
					for (var i = 0; i < cloneNum ; i++) { _chr.eq(conBoxSize - i - 1).clone().addClass("clone").prependTo(conBox); }
				}

				switch (effect) {
					case "fold": conBox.css({ "position": "relative", "width": slideW, "height": slideH }).children().css({ "position": "absolute", "width": selfW, "left": 0, "top": 0, "display": "none" }); break;
					case "top": conBox.wrap('<div class="tempWrap" style="overflow:hidden; position:relative; height:' + vis * slideH + 'px"></div>').css({ "top": -(index * scroll) * slideH, "position": "relative", "padding": "0", "margin": "0" }).children().css({ "height": selfH }); break;
					case "left": conBox.wrap('<div class="tempWrap" style="overflow:hidden; position:relative; width:' + vis * slideW + 'px"></div>').css({ "width": conBoxSize * slideW, "left": -(index * scroll) * slideW, "position": "relative", "overflow": "hidden", "padding": "0", "margin": "0" }).children().css({ "float": "left", "width": selfW }); break;
					case "leftLoop":
					case "leftMarquee":
						cloneEle();
						conBox.wrap('<div class="tempWrap" style="overflow:hidden; position:relative; width:' + vis * slideW + 'px"></div>').css({ "width": (conBoxSize + vis + cloneNum) * slideW, "position": "relative", "overflow": "hidden", "padding": "0", "margin": "0", "left": -(cloneNum + index * scroll) * slideW }).children().css({ "float": "left", "width": selfW }); break;
					case "topLoop":
					case "topMarquee":
						cloneEle();
						conBox.wrap('<div class="tempWrap" style="overflow:hidden; position:relative; height:' + vis * slideH + 'px"></div>').css({ "height": (conBoxSize + vis + cloneNum) * slideH, "position": "relative", "padding": "0", "margin": "0", "top": -(cloneNum + index * scroll) * slideH }).children().css({ "height": selfH }); break;
				}
			}



			//针对leftLoop、topLoop的滚动个数
			var scrollNum = function (ind) {
				var _tempCs = ind * scroll;
				if (ind == navObjSize) { _tempCs = conBoxSize; } else if (ind == -1 && conBoxSize % scroll != 0) { _tempCs = -conBoxSize % scroll; }
				return _tempCs;
			}

			//切换加载
			var doSwitchLoad = function (objs) {

				var changeImg = function (t) {
					for (var i = t; i < (vis + t) ; i++) {
						objs.eq(i).find("img[" + sLoad + "]").each(function () {
							var _this = $(this);
							_this.attr("src", _this.attr(sLoad)).removeAttr(sLoad);
							if (conBox.find(".clone")[0]) { //如果存在.clone
								var chir = conBox.children();
								for (var j = 0 ; j < chir.size() ; j++) {
									chir.eq(j).find("img[" + sLoad + "]").each(function () {
										if ($(this).attr(sLoad) == _this.attr("src")) $(this).attr("src", $(this).attr(sLoad)).removeAttr(sLoad)
									})
								}
							}
						})
					}
				}

				switch (effect) {
					case "fade": case "fold": case "top": case "left": case "slideDown":
						changeImg(index * scroll);
						break;
					case "leftLoop": case "topLoop":
						changeImg(cloneNum + scrollNum(_ind));
						break;
					case "leftMarquee": case "topMarquee":
						var curS = effect == "leftMarquee" ? conBox.css("left").replace("px", "") : conBox.css("top").replace("px", "");
						var slideT = effect == "leftMarquee" ? slideW : slideH;
						var mNum = cloneNum;
						if (curS % slideT != 0) {
							var curP = Math.abs(curS / slideT ^ 0);
							if (index == 1) { mNum = cloneNum + curP } else { mNum = cloneNum + curP - 1 }
						}
						changeImg(mNum);
						break;
				}
			}//doSwitchLoad end


			//效果函数
			var doPlay = function (init) {
				// 当前页状态不触发效果
				if (defaultPlay && oldIndex == index && !init && !isMarq) return;

				//处理页码
				if (isMarq) { if (index >= 1) { index = 1; } else if (index <= 0) { index = 0; } }
				else {
					_ind = index; if (index >= navObjSize) { index = 0; } else if (index < 0) { index = navObjSize - 1; }
				}

				doStartFun();

				//处理切换加载
				if (sLoad != null) { doSwitchLoad(conBox.children()) }

				//处理targetCell
				if (tarObj[0]) {
					_tar = tarObj.eq(index);
					if (sLoad != null) { doSwitchLoad(tarObj) }
					if (effect == "slideDown") {
						tarObj.not(_tar).stop(true, true).slideUp(delayTime);
						_tar.slideDown(delayTime, easing, function () { if (!conBox[0]) doEndFun() });
					}
					else {
						tarObj.not(_tar).stop(true, true).hide();
						_tar.animate({ opacity: "show" }, delayTime, function () { if (!conBox[0]) doEndFun() });
					}
				}

				if (conBoxSize >= vis) { //当内容个数少于可视个数，不执行效果。
					switch (effect) {
						case "fade": conBox.children().stop(true, true).eq(index).animate({ opacity: "show" }, delayTime, easing, function () { doEndFun() }).siblings().hide(); break;
						case "fold": conBox.children().stop(true, true).eq(index).animate({ opacity: "show" }, delayTime, easing, function () { doEndFun() }).siblings().animate({ opacity: "hide" }, delayTime, easing); break;
						case "top": conBox.stop(true, false).animate({ "top": -index * scroll * slideH }, delayTime, easing, function () { doEndFun() }); break;
						case "left": conBox.stop(true, false).animate({ "left": -index * scroll * slideW }, delayTime, easing, function () { doEndFun() }); break;
						case "leftLoop":
							var __ind = _ind;
							conBox.stop(true, true).animate({ "left": -(scrollNum(_ind) + cloneNum) * slideW }, delayTime, easing, function () {
								if (__ind <= -1) { conBox.css("left", -(cloneNum + (navObjSize - 1) * scroll) * slideW); } else if (__ind >= navObjSize) { conBox.css("left", -cloneNum * slideW); }
								doEndFun();
							});
							break;//leftLoop end

						case "topLoop":
							var __ind = _ind;
							conBox.stop(true, true).animate({ "top": -(scrollNum(_ind) + cloneNum) * slideH }, delayTime, easing, function () {
								if (__ind <= -1) { conBox.css("top", -(cloneNum + (navObjSize - 1) * scroll) * slideH); } else if (__ind >= navObjSize) { conBox.css("top", -cloneNum * slideH); }
								doEndFun();
							});
							break;//topLoop end

						case "leftMarquee":
							var tempLeft = conBox.css("left").replace("px", "");
							if (index == 0) {
								conBox.animate({ "left": ++tempLeft }, 0, function () {
									if (conBox.css("left").replace("px", "") >= 0) { conBox.css("left", -conBoxSize * slideW) }
								});
							}
							else {
								conBox.animate({ "left": --tempLeft }, 0, function () {
									if (conBox.css("left").replace("px", "") <= -(conBoxSize + cloneNum) * slideW) { conBox.css("left", -cloneNum * slideW) }
								});
							} break;// leftMarquee end

						case "topMarquee":
							var tempTop = conBox.css("top").replace("px", "");
							if (index == 0) {
								conBox.animate({ "top": ++tempTop }, 0, function () {
									if (conBox.css("top").replace("px", "") >= 0) { conBox.css("top", -conBoxSize * slideH) }
								});
							}
							else {
								conBox.animate({ "top": --tempTop }, 0, function () {
									if (conBox.css("top").replace("px", "") <= -(conBoxSize + cloneNum) * slideH) { conBox.css("top", -cloneNum * slideH) }
								});
							} break;// topMarquee end

					}//switch end
				}

				navObj.removeClass(titOn).eq(index).addClass(titOn);
				oldIndex = index;
				if (!pnLoop) { //pnLoop控制前后按钮是否继续循环
					nextBtn.removeClass("nextStop"); prevBtn.removeClass("prevStop");
					if (index == 0) { prevBtn.addClass("prevStop"); }
					if (index == navObjSize - 1) { nextBtn.addClass("nextStop"); }
				}

				pageState.html("<span>" + (index + 1) + "</span>/" + navObjSize);

			};// doPlay end

			//初始化执行
			if (defaultPlay) { doPlay(true); }

			if (returnDefault)//返回默认状态
			{
				slider.hover(function () { clearTimeout(rtnST) }, function () {
					rtnST = setTimeout(function () {
						index = defaultIndex;
						if (defaultPlay) { doPlay(); }
						else {
							if (effect == "slideDown") { _tar.slideUp(delayTime, resetOn); }
							else { _tar.animate({ opacity: "hide" }, delayTime, resetOn); }
						}
						oldIndex = index;
					}, 300);
				});
			}

			///自动播放函数
			var setInter = function (time) { inter = setInterval(function () { opp ? index-- : index++; doPlay() }, !!time ? time : interTime); }
			var setMarInter = function (time) { inter = setInterval(doPlay, !!time ? time : interTime); }
			// 处理mouseOverStop
			var resetInter = function () { if (!mouseOverStop) { clearInterval(inter); setInter() } }
			// 前后按钮触发
			var nextTrigger = function () { if (pnLoop || index != navObjSize - 1) { index++; doPlay(); if (!isMarq) resetInter(); } }
			var prevTrigger = function () { if (pnLoop || index != 0) { index--; doPlay(); if (!isMarq) resetInter(); } }
			//处理playState
			var playStateFun = function () { clearInterval(inter); isMarq ? setMarInter() : setInter(); playState.removeClass("pauseState") }
			var pauseStateFun = function () { clearInterval(inter); playState.addClass("pauseState"); }

			//自动播放
			if (autoPlay) {
				if (isMarq) {
					opp ? index-- : index++; setMarInter();
					if (mouseOverStop) conBox.hover(pauseStateFun, playStateFun);
				} else {
					setInter();
					if (mouseOverStop) slider.hover(pauseStateFun, playStateFun);
				}
			}
			else { if (isMarq) { opp ? index-- : index++; } playState.addClass("pauseState"); }

			playState.click(function () { playState.hasClass("pauseState") ? playStateFun() : pauseStateFun() });

			//titCell事件
			if (opts.trigger == "mouseover") {
				navObj.hover(function () { var hoverInd = navObj.index(this); mst = setTimeout(function () { index = hoverInd; doPlay(); resetInter(); }, opts.triggerTime); }, function () { clearTimeout(mst) });
			} else { navObj.click(function () { index = navObj.index(this); doPlay(); resetInter(); }) }

			//前后按钮事件
			if (isMarq) {

				nextBtn.mousedown(nextTrigger);
				prevBtn.mousedown(prevTrigger);
				//前后按钮长按10倍加速
				if (pnLoop) {
					var st;
					var marDown = function () { st = setTimeout(function () { clearInterval(inter); setMarInter(interTime / 10 ^ 0) }, 150) }
					var marUp = function () { clearTimeout(st); clearInterval(inter); setMarInter() }
					nextBtn.mousedown(marDown); nextBtn.mouseup(marUp);
					prevBtn.mousedown(marDown); prevBtn.mouseup(marUp);
				}
				//前后按钮mouseover事件
				if (opts.trigger == "mouseover") { nextBtn.hover(nextTrigger, function () { }); prevBtn.hover(prevTrigger, function () { }); }
			} else {
				nextBtn.click(nextTrigger);
				prevBtn.click(prevTrigger);
			}

		});//each End

	};//slide End

})(jQuery);

jQuery.easing['jswing'] = jQuery.easing['swing'];
jQuery.extend(jQuery.easing,
{
	def: 'easeOutQuad',
	swing: function (x, t, b, c, d) { return jQuery.easing[jQuery.easing.def](x, t, b, c, d); },
	easeInQuad: function (x, t, b, c, d) { return c * (t /= d) * t + b; },
	easeOutQuad: function (x, t, b, c, d) { return -c * (t /= d) * (t - 2) + b },
	easeInOutQuad: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t + b; return -c / 2 * ((--t) * (t - 2) - 1) + b },
	easeInCubic: function (x, t, b, c, d) { return c * (t /= d) * t * t + b },
	easeOutCubic: function (x, t, b, c, d) { return c * ((t = t / d - 1) * t * t + 1) + b },
	easeInOutCubic: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t + b; return c / 2 * ((t -= 2) * t * t + 2) + b },
	easeInQuart: function (x, t, b, c, d) { return c * (t /= d) * t * t * t + b },
	easeOutQuart: function (x, t, b, c, d) { return -c * ((t = t / d - 1) * t * t * t - 1) + b },
	easeInOutQuart: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b; return -c / 2 * ((t -= 2) * t * t * t - 2) + b },
	easeInQuint: function (x, t, b, c, d) { return c * (t /= d) * t * t * t * t + b },
	easeOutQuint: function (x, t, b, c, d) { return c * ((t = t / d - 1) * t * t * t * t + 1) + b },
	easeInOutQuint: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b; return c / 2 * ((t -= 2) * t * t * t * t + 2) + b },
	easeInSine: function (x, t, b, c, d) { return -c * Math.cos(t / d * (Math.PI / 2)) + c + b },
	easeOutSine: function (x, t, b, c, d) { return c * Math.sin(t / d * (Math.PI / 2)) + b },
	easeInOutSine: function (x, t, b, c, d) { return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b },
	easeInExpo: function (x, t, b, c, d) { return (t == 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b },
	easeOutExpo: function (x, t, b, c, d) { return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b },
	easeInOutExpo: function (x, t, b, c, d) { if (t == 0) return b; if (t == d) return b + c; if ((t /= d / 2) < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b; return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b },
	easeInCirc: function (x, t, b, c, d) { return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b },
	easeOutCirc: function (x, t, b, c, d) { return c * Math.sqrt(1 - (t = t / d - 1) * t) + b },
	easeInOutCirc: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b; return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b },
	easeInElastic: function (x, t, b, c, d) {
		var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3; if (a < Math.abs(c)) { a = c; var s = p / 4; }
		else var s = p / (2 * Math.PI) * Math.asin(c / a); return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b
	},
	easeOutElastic: function (x, t, b, c, d) {
		var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3; if (a < Math.abs(c)) { a = c; var s = p / 4; }
		else var s = p / (2 * Math.PI) * Math.asin(c / a); return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b
	},
	easeInOutElastic: function (x, t, b, c, d) {
		var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d / 2) == 2) return b + c; if (!p) p = d * (.3 * 1.5); if (a < Math.abs(c)) { a = c; var s = p / 4; }
		else var s = p / (2 * Math.PI) * Math.asin(c / a); if (t < 1) return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b
	},
	easeInBack: function (x, t, b, c, d, s) { if (s == undefined) s = 1.70158; return c * (t /= d) * t * ((s + 1) * t - s) + b },
	easeOutBack: function (x, t, b, c, d, s) { if (s == undefined) s = 1.70158; return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b },
	easeInOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b; return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b
	},
	easeInBounce: function (x, t, b, c, d) { return c - jQuery.easing.easeOutBounce(x, d - t, 0, c, d) + b },
	easeOutBounce: function (x, t, b, c, d) { if ((t /= d) < (1 / 2.75)) { return c * (7.5625 * t * t) + b; } else if (t < (2 / 2.75)) { return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b; } else if (t < (2.5 / 2.75)) { return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b; } else { return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b; } },
	easeInOutBounce: function (x, t, b, c, d) { if (t < d / 2) return jQuery.easing.easeInBounce(x, t * 2, 0, c, d) * .5 + b; return jQuery.easing.easeOutBounce(x, t * 2 - d, 0, c, d) * .5 + c * .5 + b; }
});